// 用于将CommonJS模块转换为ES6的Rollup插件，因此它们可以包含在Rollup捆绑包中
import common from "@rollup/plugin-commonjs";
// 一个使用节点解析算法定位模块的汇总插件，用于在Node_modules中使用第三方模块
// import resolve from "@rollup/plugin-node-resolve";
// 一个用Sucase编译TypeScript、Flow、JSX等的Rollup插件。
// import sucrase from "@rollup/plugin-sucrase";
// 一个Rollup插件，用于生成具有terser的缩小捆绑包。
import terser from "@rollup/plugin-terser";
// import scss from "rollup-plugin-scss";

import pkg from "./package.json" assert { type: "json" };
import path from "path";
const packageDir = path.resolve();
const resolve = (p) => path.resolve(packageDir, p);
const isMin = process.env.MIN == "true";

const banner = `/*
 * ${pkg.name}
 * ${pkg.description}
 * v${pkg.version}
 * ${pkg.license} License
 */
`;

const config = {
  input: "src/index.js",
  output: [
    {
      name: "fmtjs",
      file: resolve(
        `dist/${pkg.version}/${pkg.name}${isMin ? ".min" : ""}.mjs`
      ), //文件打包后出口文件名称
      // file: pkg.name,
      format: "es",
      exports: "named",
      strict: true,
      banner,
      sourcemap: true, //生成bundle.map.js文件，方便调试
      extend: true,
    },
    {
      name: "fmtjs",
      file: resolve(`dist/${pkg.version}/${pkg.name}.umd.js`), //文件打包后出口文件名称
      // exports: "default",
      exports: "named",
      strict: true,
      banner,
      format: `umd`, //打包后文件格式 iife 自执行函数,适合script引入
      sourcemap: false, //生成bundle.map.js文件，方便调试
      extend: true,
      globals: { dayjs: "dayjs" },
    },
    {
      name: "fmtjs",
      file: resolve(`dist/${pkg.version}/${pkg.name}.iife.js`), //文件打包后出口文件名称
      // exports: "default",
      exports: "named",
      strict: true,
      banner,
      format: `iife`, //打包后文件格式 iife 自执行函数,适合script引入
      sourcemap: false, //生成bundle.map.js文件，方便调试
      extend: true,
      globals: { dayjs: "dayjs" },
    },
  ],
  plugins: [
    // scss(),
    // vue({
    //   css: false, // Dynamically inject css as a <style> tag
    //   compileTemplate: true // Explicitly convert template to render function
    // }),
    // sucrase({
    // exclude: ["node_modules/**"],
    // transforms: ["typescript"],
    // }),
    // common({
    //   include: ['node_modules/**', 'node_modules/**/*']
    // }),
    // babel({
    //   exclude: 'node_modules/**' // 只转译我们的源代码
    // }),
    // resolve(),
  ],
  external: ["dayjs", "moment"],
};
if (isMin)
  config.plugins.push(
    terser({
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    })
  );
export default config;
